const LhzxHttpClient = require('./LhzxHttpClient');

// 调试和测试函数
async function debugTest() {
    console.log('=== 云翼信短信接口Node.js调试 ===\n');
    
    const client = new LhzxHttpClient();
    
    // 测试1: 测试MD5编码函数
    console.log('1. 测试MD5编码功能:');
    const testString = 'test123';
    const md5Result = client.encoderByMd5(testString);
    console.log(`输入: ${testString}`);
    console.log(`MD5+Base64结果: ${md5Result}\n`);
    
    // 测试2: 测试时间戳格式化
    console.log('2. 测试时间戳格式化:');
    const currentTime = new Date();
    const formattedTime = client.formatTimestamp(currentTime);
    console.log(`当前时间: ${currentTime}`);
    console.log(`格式化时间戳: ${formattedTime}\n`);
    
    // 测试3: 完整参数生成（模拟）
    console.log('3. 模拟完整参数生成:');
    const mockConfig = {
        user: "testUser",
        siid: "TEST001",
        secretKey: "testSecretKey123",
        mobile: "13800138000",
        content: "【测试】这是一条测试短信",
        url: "https://httpbin.org/post"  // 使用httpbin进行测试
    };
    
    // 手动构造参数（不发送真实请求）
    const timeStamp = client.formatTimestamp();
    const transactionID = timeStamp;
    const streamingNo = mockConfig.siid + transactionID;
    const authenticator = client.encoderByMd5(timeStamp + transactionID + streamingNo + mockConfig.secretKey);
    
    const requestData = {
        siid: mockConfig.siid,
        user: mockConfig.user,
        streamingNo: streamingNo,
        timeStamp: timeStamp,
        transactionID: transactionID,
        authenticator: authenticator,
        mobile: mockConfig.mobile,
        content: mockConfig.content
    };
    
    console.log('生成的请求参数:');
    console.log(JSON.stringify(requestData, null, 2));
    console.log();
    
    // 测试4: 发送到测试URL（如果需要）
    console.log('4. 是否发送测试请求到httpbin？(y/n)');
    
    // 这里可以手动修改为true来测试HTTP请求
    const shouldSendTest = false;
    
    if (shouldSendTest) {
        try {
            console.log('发送测试请求中...');
            const response = await client.sendPostRequest(
                JSON.stringify(requestData), 
                "https://httpbin.org/post"
            );
            console.log('测试响应:', response);
        } catch (error) {
            console.error('测试请求失败:', error.message);
        }
    } else {
        console.log('跳过HTTP测试请求\n');
    }
    
    console.log('=== 调试完成 ===');
    console.log('使用说明:');
    console.log('1. 修改 mockConfig 中的参数为真实值');
    console.log('2. 将 shouldSendTest 设为 true 进行真实请求测试');
    console.log('3. 替换测试URL为真实的云翼信API地址');
}

// 运行调试
debugTest().catch(console.error); 